package com.h3bpm.web.engineEvent;


import OThinker.H3.Entity.EventHandlers.ICirculateItemEventHandler;
import OThinker.H3.Entity.IEngine;
import OThinker.H3.Entity.WorkItem.CirculateModels.CirculateItem;
import OThinker.H3.Entity.WorkItem.CirculateModels.CirculateItemFinished;
import OThinker.H3.Entity.WorkItem.WorkItemState;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

//@Component
public class MessageCirculateItemEventHandler implements ICirculateItemEventHandler {

    private static final Logger logger = LoggerFactory.getLogger(MessageCirculateItemEventHandler.class);
    public MessageCirculateItemEventHandler() {
        logger.info("@@@Init the MessageCirculateItemEventHandler succ ...");
    }


    @Override
    public void OnCreated(IEngine engine, CirculateItem circulateItem) {

        logger.info("@@@待阅MessageCirculateItemEventHandler开始执行 ...");
        logger.info("《》《》《》@待阅 circulateItem id={}, state={}", circulateItem.getObjectId(), circulateItem.getState());


        try {

            // 结束或者取消
            if(WorkItemState.Finished.equals(circulateItem.getState())){
                logger.info("<><><>进入待阅到已阅方法。。。");
                CirculateItemFinished circulateItemFinished = new CirculateItemFinished(circulateItem);
                String requestByWorkItem = MessageHelper.createRequestByCirculate(engine, circulateItemFinished,null);
                logger.info("<><><>修改待阅到已阅的消息响应 ：{}",requestByWorkItem);
                return;
            }

                logger.info("<><><>@addMsg 进入插入待阅消息", circulateItem.getObjectId());
                //获取流程实例
                String requestByCirculate = MessageHelper.createRequestByWorkItem(engine,null, circulateItem,"OnCreated");
                logger.info("<><><>待阅插入消息中心的响应 ：{}",requestByCirculate);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    public void OnUpdated(IEngine Engine, CirculateItem Obj) {

    }

    @Override
    public void OnRemoved(IEngine Engine, String ObjId) throws Exception {

    }
}
